package klab;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;


/**
 * Manipulacija komlpetnim sistemom
 */
public class Sistem extends JPanel {

	private static final long serialVersionUID = 2559875642482736738L;
	JButton restart = new JButton("restartuj"),
			prekini = new JButton("<html><center>otkaži<br>gašenja"),
			iskljuci= new JButton("isključi"),
			izlaz   = new JButton("IZLAZ");
	JCheckBox batch = new JCheckBox("generiši batch"),
			  nezavisno = new JCheckBox("startuj");
	private Sistem(){
		super();
		init();
	}
	SysOperacije sysOp = SysOperacije.getInstance();
	private static Sistem instance = null;
	
	public static Sistem getInstance(){
		if (null == instance)
			instance = new Sistem();
		return instance;
	}
	private void init(){
		JPanel levi = new JPanel(),
			 prazno = new JPanel();
		batch.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if (Manipulacija.getInstance().batch.isSelected() != batch.isSelected())
					Manipulacija.getInstance().batch.setSelected(batch.isSelected());
				if (batch.isSelected() || nezavisno.isSelected())
					SysOperacije.getInstance().setDugmadEnabled(true);
				else
					SysOperacije.getInstance().setDugmadEnabled(false);
			}
		});
		nezavisno.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if (Manipulacija.getInstance().neposredno.isSelected() != nezavisno.isSelected())
					Manipulacija.getInstance().neposredno.setSelected(nezavisno.isSelected());	
				if (batch.isSelected() || nezavisno.isSelected())
					SysOperacije.getInstance().setDugmadEnabled(true);
				else
					SysOperacije.getInstance().setDugmadEnabled(false);
			}
		});
		levi.setLayout(new BorderLayout());
		levi.add(batch,BorderLayout.NORTH);
		levi.add(nezavisno,BorderLayout.SOUTH);
		
		prekini.setToolTipText("otkaži restart/isključivanje");
		
		restart.setBackground(Color.orange);
		restart.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				Cursor kursor = new Cursor(Cursor.WAIT_CURSOR);
				KLForma.getInstance().setCursor(kursor);
				KLForma.getInstance().setEnabled(false);
				sysOp.gasi(batch.isSelected(), nezavisno.isSelected(), SysOperacije.RESTART);
				kursor = new Cursor(Cursor.DEFAULT_CURSOR);
				KLForma.getInstance().setCursor(kursor);
				KLForma.getInstance().setEnabled(true);
			}
		});
		prekini.setBackground(Color.orange);
		prekini.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				Cursor kursor = new Cursor(Cursor.WAIT_CURSOR);
				KLForma.getInstance().setCursor(kursor);
				KLForma.getInstance().setEnabled(false);
				sysOp.gasi(batch.isSelected(), nezavisno.isSelected(), SysOperacije.ABORT_SHUTDOWN);
				kursor = new Cursor(Cursor.DEFAULT_CURSOR);
				KLForma.getInstance().setCursor(kursor);
				KLForma.getInstance().setEnabled(true);
			}
		});
		iskljuci.setBackground(Color.orange);
		iskljuci.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				Cursor kursor = new Cursor(Cursor.WAIT_CURSOR);
				KLForma.getInstance().setCursor(kursor);
				KLForma.getInstance().setEnabled(false);
				sysOp.gasi(batch.isSelected(), nezavisno.isSelected(), SysOperacije.SHUTDOWN);
				kursor = new Cursor(Cursor.DEFAULT_CURSOR);
				KLForma.getInstance().setCursor(kursor);
				KLForma.getInstance().setEnabled(true);
			}
		});
		izlaz.setBackground(Color.white);
		izlaz.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		
		setPreferredSize(new Dimension (new Dimension(672,70)));
		setBorder(new TitledBorder(" SISTEM "));
		setLayout(new GridLayout(1,7));
		
		add(levi);
		add(restart);
		add(iskljuci);
		add(prekini);
		add(prazno);
		add(izlaz);
	}
}
